package com.fanrenqiji.common.factory;

import java.util.UUID;

import com.fanrenqiji.common.utils.StringDateUtil;

/**
 * @author lijian E-mail:ljz0721cx@163.com
 * @version 创建时间：2015年3月31日 下午6:49:58
 * @description
 */
public class UniqueFactory {

	/**
	 * 获得带有时间的唯一值
	 * 在100万条数据中有重复
	 * @return
	 */
	public static String getUUIDLongToString() {
		return StringDateUtil.getCurrentyyyyMMddHHmmss().concat(
				getNanoTimeToString());
	}

	/**
	 * 通过System.nanoTime()生成随机数在少量数据时候能够保证准确
	 * 在数据量大时候会出现大量的重复建议在生成唯一值的时候使用getUUIDLongToString()
	 * 
	 * @return
	 */
	public static String getNanoTimeToString() {
		return String.valueOf(System.nanoTime());
	}

	/**
	 * 使用该数据
	 *  通过UUID生成随机数获唯一值的String类型 在测试中1000000条数据没有重复数据
	 * @return
	 */
	public static String getCurrentSingleSerial() {
		UUID uuid = UUID.randomUUID();
		return StringDateUtil.getCurrentyyyyMMdd()+String.valueOf(Math.abs(uuid.getLeastSignificantBits()));
	}

	/**
	 * UUID生成的随机值
	 * @return
	 */
	public static String getAbsUUid(){
		UUID uuid = UUID.randomUUID();
		return String.valueOf(Math.abs(uuid.getLeastSignificantBits()));
	}
	
	public static void main(String[] args) {
		System.out.println(getAbsUUid());
	}
}
